資料庫複制、身份驗證都有了,還能做什麼讓我們的資料更加安全呢?喔對了,還可以備份我們的資料!接下來來講匯出整個資料庫的資料來做備份
MongoDB 這邊有一個指令叫 mongodump
是用來匯出資料庫的資料,你可以匯出整個資料庫,也可以選擇匯出部分的 database 或 collection
不過要用這個功能前,得先額外安裝 MongoDB 的資料庫工具,我們先進到 MongoDB Database Tools 的下載頁面
下載、解壓縮,然後裝好
開啟終端,輸入以下指令就可以備份整個資料庫的資料了
mongodump -h [db_url] -o [backup_path] -u [user] -p [password]
另外我寫了一個 python script 每天去備份我的資料庫,提供給大家參考
import datetime
import os
import time
import shutil
# global settings ####################################
max_days=90
################################
db_host='your_host'
db_port='your_port'
db_url=db_host+':'+db_port
user='your_db_user'
password='your_db_password'
backup_path='backup_path'
# excute back-up program
while True:
today=datetime.date.today().strftime("%Y-%m-%d")
print('\n'*2+'back-up %s data' % backup_path[0:-1])
print('located at %s:%s' % (db_host,db_port))
if os.path.isdir(backup_path+today):
shutil.rmtree(backup_path+today)
os.mkdir(backup_path+today)
else:
os.mkdir(backup_path+today)
os.system('mongodump -h '+db_url+' -o '+backup_path+today+' -u '+user+' -p '+password)
print(today+' back-up %s data successfully' % backup_path[0:-1])
# delete old back-up
totalDir=0
dir_names=[]
for dirPath, dirNames, fileNames in os.walk(backup_path):
if dirPath==backup_path:
for directories in dirNames:
totalDir += 1
dir_names+=[directories]
break
dir_names.sort()
if totalDir>max_days:
for i in range(totalDir-max_days):
shutil.rmtree(backup_path+dir_names[i])
time.sleep(86400)